home *** CD-ROM | disk | FTP | other *** search
/ Precision Software Appli…tions Silver Collection 1 / Precision Software Applications Silver Collection Volume One (PSM) (1993).iso / tutor / typteach.exe / TYPETEST.BAS < prev   
BASIC Source File  |  1984-04-12  |  6KB  |  188 lines

  1. 10 'TYPER
  2. 20 'COPYRIGHT 1984, GORMAN PROGRAMMING
  3. 30 'STAMFORD, CT
  4. 40 '
  5. 50 'TYPER IS MADE AVAILABLE AS PUBLIC DOMAIN SOFTWARE
  6. 60 'SO LONG AS THE ABOVE MESSAGE AND START SCREENS ARE RETAINED
  7. 70 '
  8. 80 KEY OFF:SCREEN 1:COLOR 1,0:CLS
  9. 90 DIM FACE(20),SAMS(20),BOX(20)
  10. 100 LOCATE 1,1:PRINT CHR$(2);
  11. 110 GET (0,0)-(7,7),FACE
  12. 120 LOCATE 1,1:PRINT " "
  13. 130 LINE (0,3)-(3,0),1
  14. 140 LINE -(6,3),1:LINE -(0,3),1
  15. 150 PAINT (3,2),1,1
  16. 160 GET (0,0)-(7,7),SAMS
  17. 170 LOCATE 1,1:PRINT CHR$(251);
  18. 180 GET (0,0)-(7,7),BOX
  19. 190 LOCATE 1,1:PRINT " "
  20. 200 COLOR ,1:DIM G(24,4)
  21. 210 FOR I=1 TO 24:READ G(I,1),G(I,2),G(I,3),G(I,4):NEXT
  22. 220 DATA 228,47,0,0,228,42,0,-1,86,42,-1,0,86,93,0,1,228,93,1,0,228,74,0,-1,165,74,-1,0
  23. 230 DATA 165,76,0,0,225,76,1,0,225,91,0,1,89,91,-1,0,89,44,0,-1,225,44,1,0,225,47,0,1
  24. 240 DATA 117,87,0,0,117,50,0,-1,192,50,1,0,192,69,0,1,124,69,-1,0
  25. 250 DATA 124,67,0,0,189,67,1,0,189,52,0,-1,120,52,-1,0,120,87,0,1
  26. 260 SCREEN 1:COLOR 1,1:KEY OFF:CLS
  27. 270 FOR I=1 TO 23
  28. 280 A1=G(I,1):A2=G(I+1,1):B1=G(I,2):B2=G(I+1,2)
  29. 290 IF G(I+1,3)=0 THEN 340
  30. 300 FOR J=A1 TO A2 STEP G(I+1,3)
  31. 310 PSET (J-6,B1+13),3
  32. 320 NEXT J
  33. 330 GOTO 380
  34. 340 IF G(I+1,4)=0 THEN 380
  35. 350 FOR J=B1 TO B2 STEP G(I+1,4)
  36. 360 PSET (A1-6,J+13),3
  37. 370 NEXT J
  38. 380 NEXT I
  39. 390 LOCATE 15,11
  40. 400 PRINT "GORMAN PROGRAMMING"
  41. 410 FOR I=1 TO 3000:NEXT
  42. 420 LOCATE 18,16
  43. 430 PRINT "PRESENTS"
  44. 440 FOR I=1 TO 2000:NEXT
  45. 450 ERASE G:CLS
  46. 460 COLOR 1,0
  47. 470 DEFSTR A:TX=0:GAME=0
  48. 480 DIM HFACE(8),HSAMS(8)       'HORIZONTAL POSITIONS
  49. 490 DIM VFACE(8),VSAMS(8)       'VERTICAL POSITIONS
  50. 500 DIM HIT(8),PHIT(8)          'HITS, POSITION OF COUNTER
  51. 510 DIM LTRS(26)                'ALPHABET IN USE
  52. 520 DIM ASAMS(8)                'LETTERS OF THE SAMS (IN USE)
  53. 530 LOCATE 24,40:PRINT "\";
  54. 540 LOCATE 23,1:PRINT "/   \/   \/   \/   \/   \/   \/   \/  ";
  55. 550 LINE (0,8)-(319,15),2,BF
  56. 560 FOR I=0 TO 315 STEP 8
  57. 570 PUT (I,8),BOX
  58. 580 NEXT
  59. 590 FOR I = 1 TO 8
  60. 600 LOCATE 3,(I-1)*5+3:PRINT "|";
  61. 610 NEXT
  62. 620 LINE(0,185)-(319,199),2,BF
  63. 630 LOCATE 22,1:PRINT " / \  / \  / \  / \  / \  / \  / \  / \";
  64. 640 DEF SEG = &H40
  65. 650 X=PEEK(&H17)
  66. 660 POKE &H17,X OR 64
  67. 670 DEF SEG
  68. 680 FOR I=1 TO 8
  69. 690 HIT(I)=0
  70. 700 HFACE(I)=(I-1)*40+16:HSAMS(I)=HFACE(I)
  71. 710 VFACE(I)=23:VSAMS(I)=160
  72. 720 PHIT(I)=(I-1)*5+2
  73. 730 NEXT
  74. 740 TOTALP=0
  75. 750 FOR I=4 TO 20:LOCATE I,1:PRINT SPC(79);:NEXT
  76. 760 FOR I=1 TO 8
  77. 770 PUT (HSAMS(I),VSAMS(I)),SAMS
  78. 780 NEXT
  79. 790 PLAY "MBL4O3T220GFL8EDCDL4EO4CO3L4GEL4FEL8DCO2BO3GL1C"
  80. 800 LINE(100,64)-(119,64)
  81. 810 LINE(110,64)-(110,86)
  82. 820 LINE(129,64)-(140,75)
  83. 830 LINE(151,64)-(140,75)
  84. 840 LINE -(140,86)
  85. 850 LINE(158,86)-(158,64)
  86. 860 LINE -(174,64):LINE -(174,74)
  87. 870 LINE -(158,74)
  88. 880 LINE(204,64)-(186,64)
  89. 890 LINE -(186,86):LINE -(204,86)
  90. 900 LINE(186,74)-(200,74)
  91. 910 LINE(65,98)-(84,98):LINE(75,98)-(75,120)
  92. 920 LINE(114,98)-(96,98)
  93. 930 LINE -(96,120):LINE -(114,120)
  94. 940 LINE(96,108)-(110,108)
  95. 950 LINE(146,100)-(146,98)
  96. 960 LINE -(127,98):LINE -(127,108)
  97. 970 LINE -(146,108):LINE -(146,120)
  98. 980 LINE -(127,120):LINE -(127,116)
  99. 990 LINE(158,98)-(177,98):LINE(168,98)-(168,120)
  100. 1000 LINE(210,98)-(192,98)
  101. 1010 LINE -(192,120):LINE -(210,120)
  102. 1020 LINE(192,108)-(206,108)
  103. 1030 LINE(224,120)-(224,98)
  104. 1040 LINE -(240,98):LINE -(240,108):LINE -(224,108)
  105. 1050 LINE(237,108)-(243,120)
  106. 1060 FOR I=1 TO 2000:NEXT
  107. 1070 LOCATE 25,3:PRINT " COPYRIGHT 1984, GORMAN PROGRAMMING ";
  108. 1080 FOR I=1 TO 2000:NEXT
  109. 1090 IF GAME=0 THEN GAME=1:FOR I=1 TO 3000:NEXT
  110. 1100 LINE(0,185)-(319,199),2,BF
  111. 1110 FOR I=1 TO 8
  112. 1120 PUT (HFACE(I),188),FACE
  113. 1130 NEXT
  114. 1140 FOR I=1 TO 2000:NEXT
  115. 1150 FOR I=9 TO 16:LOCATE I,1:PRINT SPC(79);:NEXT
  116. 1160 LOCATE 10,7:PRINT "GAME OR PRACTICE   (G/P)?";
  117. 1170 AA=INKEY$:IF AA="" THEN 1170
  118. 1180 IF AA="G" THEN DROP=1:G=1:GOTO 1260
  119. 1190 IF AA<>"P" THEN 1170
  120. 1200 LOCATE 10,6:PRINT "  1  2  3  4  5  6  7  8  9"
  121. 1210 LOCATE 12,8:PRINT "SLOWER- - - - - - -FASTER"
  122. 1220 LOCATE 15,11:PRINT "ENTER DROP SPEED: "
  123. 1230 AA=INKEY$:IF AA="" THEN 1230
  124. 1240 IF VAL(AA)>9 OR VAL(AA)<1 THEN 1230
  125. 1250 DROP=VAL(AA):G=0
  126. 1260 FOR I=10 TO 15:LOCATE I,1:PRINT SPC(79);:NEXT
  127. 1270 FOR I=188 TO 28 STEP -5
  128. 1280 FOR J=1 TO 8
  129. 1290 PUT (HFACE(J),I),FACE,XOR
  130. 1300 PUT (HFACE(J),I-5),FACE,XOR
  131. 1310 NEXT:NEXT
  132. 1320 FOR I=1 TO 8
  133. 1330 GOSUB 1660
  134. 1340 ASAMS(I)=AX:LOCATE 23,(I-1)*5+3:PRINT AX;
  135. 1350 LOCATE 1,PHIT(I):PRINT HIT(I);
  136. 1360 NEXT
  137. 1370 SOUND 1000,4:TIME$="00:00:00"
  138. 1380 GOSUB 1570:AA=INKEY$:IF AA="" THEN 1380
  139. 1390 IF AA=CHR$(27) THEN 1700
  140. 1400 IF AA>"Z" OR AA<"A" THEN 1380
  141. 1410 FOR II=1 TO 8:IF AA=ASAMS(II) THEN 1430 ELSE NEXT
  142. 1420 GOTO 1380
  143. 1430 ASAMS(II)="":PUT (HSAMS(II),VSAMS(II)),SAMS,XOR
  144. 1440 FOR JJ=160 TO VFACE(II)+6 STEP -7:PUT (HSAMS(II),JJ),SAMS,XOR:PUT (HSAMS(II),JJ),SAMS,XOR:NEXT
  145. 1450 PLAY"MBO3L50MSCDEFG":CIRCLE(HSAMS(II)+3,JJ+3),7,2
  146. 1460 PAINT (HSAMS(II),JJ+3),3,2:PAINT (HSAMS(II),JJ+3),0,0
  147. 1470 GOSUB 1660:ASAMS(II)=AX:LOCATE 23,(II-1)*5+3:PRINT AX;:VFACE(II)=23
  148. 1480 PUT(HFACE(II),VFACE(II)),FACE,XOR:PUT(HSAMS(II),VSAMS(II)),SAMS,XOR
  149. 1490 HIT(II)=HIT(II)+1:LOCATE 1,PHIT(II):PRINT HIT(II);
  150. 1500 IF G=1 THEN TOTALP=TOTALP+1:IF TOTALP MOD 30=0 THEN DROP=DROP+1
  151. 1510 GOTO 1380
  152. 1520 VFACE(I)=188:ASAMS(I)="":BEEP
  153. 1530 PUT (HFACE(I),VFACE(I)),FACE,XOR
  154. 1540 TSTR=TSTR+1
  155. 1550 LOCATE 23,(I-1)*5+3:PRINT " ";
  156. 1560 GOTO 1630
  157. 1570 TSTR=0
  158. 1580 FOR I=1 TO 8
  159. 1590 IF VFACE(I)=188 THEN TSTR=TSTR+1:GOTO 1630
  160. 1600 PUT (HFACE(I),VFACE(I)),FACE,XOR:VFACE(I)=VFACE(I)+DROP
  161. 1610 IF VFACE(I)>150 THEN GOTO 1520
  162. 1620 PUT (HFACE(I),VFACE(I)),FACE,XOR
  163. 1630 NEXT I
  164. 1640 IF TSTR=8 THEN 1700 ELSE RETURN
  165. 1650 GOTO 1650
  166. 1660 'GET A LETTER
  167. 1670 L=CINT(RND*100):IF L<65 OR L>90 THEN 1670
  168. 1680 AX=CHR$(L):FOR K=1 TO 8:IF AX=ASAMS(K) THEN 1670 ELSE NEXT
  169. 1690 RETURN
  170. 1700 ATM=TIME$
  171. 1710 FOR I=4 TO 20:LOCATE I,1:PRINT SPC(79);:NEXT
  172. 1720 IF G=0 THEN GOTO 1800
  173. 1730 LOCATE 7,2:PRINT "YOUR SCORE IS: ";TOTALP
  174. 1740 LOCATE 9,2:PRINT "TIME ELAPSED : ";
  175. 1750 PRINT MID$(ATM,4,2);"  MINUTES  ";RIGHT$(ATM,2);"  SECONDS"
  176. 1760 LOCATE 11,2:PRINT "YOUR TYPING RATIO IS: ";
  177. 1770 TTL=VAL(MID$(ATM,4,2))*60+VAL(RIGHT$(ATM,2))
  178. 1780 TTL=CINT((TOTALP/TTL)*100)
  179. 1790 PRINT TTL
  180. 1800 LOCATE 17,2:PRINT "WOULD YOU LIKE TO PLAY AGAIN? (Y/N) ";
  181. 1810 TIME$="00:00:00"
  182. 1820 IF TIME$>"00:00:45" THEN CLS:END
  183. 1830 AA=INKEY$:IF AA="" THEN 1820
  184. 1840 IF AA="N" THEN CLS:END
  185. 1850 IF AA="Y" THEN CLS:GOTO 530
  186. 1860 GOTO 1820
  187. HEN CLS:END
  188. 1830 AA=